namespace Umdf.ComInterop
{
    using System;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    [ComImport, Guid("1BEC7499-8881-4F2B-B01C-A1A907304AFC"), InterfaceType((short) 1), TypeLibType((short) 0x200)]
    public interface IDriverEntry
    {
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void OnInitialize([In, MarshalAs(UnmanagedType.Interface)] IWDFDriver pWdfDriver);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void OnDeviceAdd([In, MarshalAs(UnmanagedType.Interface)] IWDFDriver pWdfDriver, [In, MarshalAs(UnmanagedType.Interface)] IWDFDeviceInitialize pWdfDeviceInit);
        [PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void OnDeinitialize([In, MarshalAs(UnmanagedType.Interface)] IWDFDriver pWdfDriver);
    }
}

